package com.tbit.uqbike.object.pojo;

import com.tbit.uqbike.annos.Excel;
import com.tbit.uqbike.webmanager.config.ManagerConfig;
import lombok.Data;
import lombok.ToString;

import java.util.Date;

/**
 * 设备最后状态
 *
 * @author Leon
 * 2019年11月11日 上午10:44:20
 */
@Data
@ToString
public class MachineStatus {
    /**
     * 经度
     */
    protected Double lon;
    /**
     * 纬度
     */
    protected Double lat;
    /**
     * 校准经度
     */
    protected Double lonC;
    /**
     * 校准纬度
     */
    protected Double latC;
    /**
     * 设备id
     */
    private Integer machineId;
    /**
     * 车辆类型
     */
    @Excel(name = "车辆类型", sort = 1, readConverterExp = "0=电单车,1=自行车")
    private Integer machineType;
    /**
     * 设备编号
     */
    @Excel(name = "设备编号", sort = 3)
    private String machineNO;
    // 用户码
    @Excel(name = "车辆编号", sort = 2)
    private String userCode;
    /**
     * 定位时间
     */
    @Excel(name = "最后定位时间", dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 6)
    private Date posDt;
    /**
     * 定位类型 0-gps定位(默认)  1-手动定位  -V3.7.0
     */
    private Integer posType;
    /**
     * 电池时间
     */
    private Date batDt;
    /**
     * 电量百分比
     */
    private Integer socPercent;
    /**
     * 剩余续航里程
     */
    private Integer surplusMileage;
    // 电压
    private Integer batteryEU;
    // 终端状态
    private Integer terStatus;

    /**
     * 车架号
     */
    private String frame;
    /**
     * 车牌号
     */
    private String license;
    /**
     * 电机号
     */
    private String motor;
    /**
     * 车辆描述
     */
    private String remark;
    /**
     * 车辆头盔mac地址
     */
    private String helmetMac;

    public boolean getOnline() {
        if (batDt == null) {
            return false;
        } else {
            int terOfflineSec = this.machineType == 0 ? ManagerConfig.TerOfflineSec : ManagerConfig.BIKE_TER_OFFLINE_SEC;
            return (System.currentTimeMillis() - batDt.getTime()) < terOfflineSec * 1000L;
        }
    }

}
